package com.peanut.web.util.ocs;

import com.peanut.util.ocs.OCSCache;

/**
 * @author songjz
 */
public class MessageIntervalWebUtil {

  /**
   * <pre>
   * 验证默认的短信时间间隔，参见OCSWebKeys.PORSCHE_MOBILE_MESSAGE_INTERNAL_EXP
   * 返回false，表示没有超过短信的时间间隔
   * </pre>
   * 
   * @param mobile
   * @return
   */
  public static boolean varify(String mobile) {
    return varify(mobile, OCSWebKeys.PEANUT_WEB_MESSAGE_INTERNAL_EXP);
  }

  /**
   * 获取默认的短信时间间隔
   * 
   * @param mobile
   * @return
   */
  public static long getMessageInterval(String mobile) {
    return getMessageInterval(mobile, OCSWebKeys.PEANUT_WEB_MESSAGE_INTERNAL_EXP);
  }

  /**
   * 验证短信时间间隔，返回false，表示没有超过短信的时间间隔
   * 
   * @param mobile
   * @param internal_exp
   *          :需要计算的时间间隔
   * @return
   */
  private static boolean varify(String mobile, long internal_exp) {
    long messageInterval = getMessageInterval(mobile, internal_exp);
    if (messageInterval > 0 && messageInterval < internal_exp) {
      return false;
    }
    return true;
  }

  /**
   * 信息短信与时间间隔，剩余的时间
   * 
   * @param mobile
   *          :手机号
   * @param internal_exp
   *          ：时间间隔
   * @return
   */
  public static long getMessageInterval(String mobile, long internal_exp) {
    Object obj =
        OCSCache.getAndTouch(OCSWebKeys.PEANUT_WEB_MESSAGE_INTERNAL + mobile, OCSWebKeys.PEANUT_WEB_CODE_EXP);
    long interval = 0;
    if (obj != null) {
      String lastSendTime = obj.toString();
      interval = (System.currentTimeMillis() - Long.parseLong(lastSendTime)) / 1000;
      interval = interval > internal_exp ? 0 : (internal_exp - interval);
    }
    return interval;
  }

}
